// UVa11997 K Smallest Sums
// 刘汝佳
#include <bits/stdc++.h>
using namespace std;
#define _for(i, a, b) for (int i = (a); i < (b); ++i)
typedef long long LL;
vector<int> A, B;
int K;
struct Item {
  int sum, b;  // A_a + B_b, b
  bool operator<(const Item &i) const { return sum > i.sum; };
};
void merge() {  // AxB -> A
  priority_queue<Item> Q;
  _for(i, 0, K) Q.push({A[i] + B[0], 0});
  _for(i, 0, K) {
    Item x = Q.top();
    Q.pop(), A[i] = x.sum;
    if (x.b < K - 1) Q.push({x.sum + B[x.b + 1] - B[x.b], x.b + 1});
  }
}
void read_array(vector<int> &p) {
  for (int &i : p) cin >> i;
  sort(begin(p), end(p));
}
int main() {
  ios::sync_with_stdio(false), cin.tie(0);
  while (cin >> K) {
    A.resize(K), B.resize(K), read_array(A);
    _for(i, 1, K) read_array(B), merge();
    _for(i, 0, K) printf("%d%c", A[i], i < K - 1 ? ' ' : '\n');
  }
  return 0;
}
/*
算法分析请参考: 《入门经典训练指南-升级版》3.1.2节 例题4
注意本题只用了两个数组变实现了K个数组的合并
*/
// 18787064 11997 K Smallest Sums Accepted  C++11 0.110 2017-02-16 08:15:10